#include "chatmessagewidget.h"
#include <QLabel>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QDebug>

ChatMessageWidget::ChatMessageWidget(chatWindowListStruct D, QWidget *parent)
    : QWidget(parent)
{
    // 判断消息是发送方（自己）还是接收方（对方）
    bool isSelf = (D.userId == uid);

    // 使用 QHBoxLayout 布局头像和消息内容
    QHBoxLayout *hLayout = new QHBoxLayout(this);

    // 头像
    QLabel *headImg = new QLabel(this);
    headImg->setFixedSize(40, 40); // 设置头像大小
    QString headImgPath;
    if (D.userId > 4)
    {
        headImgPath = QString("background-image: url(../weChat/images/head4.png); border-radius: 2px;");
    }
    else
    {
        headImgPath = QString("background-image: url(../weChat/images/head%1.png); border-radius: 2px;").arg(D.userId);
    }
    headImg->setStyleSheet(headImgPath);

    // 消息内容布局
    QVBoxLayout *vLayout = new QVBoxLayout();

    // 名字
    QLabel *nameLabel = new QLabel(D.niceName, this);
    nameLabel->setStyleSheet("color: #333333; font-size: 12px; font-weight: 400;color:#b2b2b2"); // 设置名字样式

    // 文本
    QLabel *textLabel = new QLabel(D.message, this);
    textLabel->setWordWrap(true);                                             // 允许文本换行
    textLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); // 动态调整大小

    // 根据发送方调整布局和样式
    if (isSelf)
    {
        // 发送方：头像在右侧，消息内容在左侧
        hLayout->addLayout(vLayout);
        hLayout->addWidget(headImg);

        // 设置消息内容样式
        textLabel->setStyleSheet("color: #000000; font-size: 12px;line-height:15px; background-color: #95ec69; padding: 13px; border-radius: 8px;");
        nameLabel->setAlignment(Qt::AlignRight); // 名字右对齐
    }
    else
    {
        // 接收方：头像在左侧，消息内容在右侧
        hLayout->addWidget(headImg);
        hLayout->addLayout(vLayout);

        // 设置消息内容样式
        textLabel->setStyleSheet("color: #000000; font-size: 12px;line-height:15px; background-color: #FFFFFF; padding: 8px; border-radius: 8px;");
        nameLabel->setAlignment(Qt::AlignLeft); // 名字左对齐
    }

    // 添加名字和文本到布局
    vLayout->addWidget(nameLabel);
    vLayout->addWidget(textLabel);

    // 设置布局
    this->setLayout(hLayout);

    // 设置窗口背景颜色
    this->setStyleSheet("background-color: transparent;");

    qDebug() << "绘制会话消息";
}